package com.cxm.qyyz.core.http;

import android.app.Activity;

import com.cxm.qyyz.BuildConfig;
import com.cxm.qyyz.app.Navigator;
import com.cxm.qyyz.base.mvp.BaseContract;
import com.cxm.qyyz.utils.AppUtil;
import com.cxm.qyyz.utils.flow.LogUtils;
import com.google.gson.Gson;

import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;

import retrofit2.HttpException;

public class ErrorHandler {

    //0：操作成功！
    //-1：操作失败！
    //301：用户名或密码错误
    //401：token无效
    //401：token已过期
    //402：该账号已被冻结
    //451：账号不存在！
    //510：文件未找到!
    //511：生成文件夹错误！
    //512：上传文件错误！
    //513：上传文件大小为0！
    //514：上传文件类型非法！
    //516：图片生成错误！
    //997：奇豆不足，无法支付
    //1000：盲盒不足，请购买
    //1001：商品库存不足，无法购买请等待
    public static void handleError(Throwable error, BaseContract.BaseView mView, boolean errType) {
        if (mView != null) {
            mView.onDismiss();
        }
        if (error instanceof ApiException) {
            ApiException mErr = (ApiException) error;
            LogUtils.d(" - ---rror instanceof ApiExceptio " + new Gson().toJson(mErr));
            if (null != mView)
                mView.toast(mErr.getErrMsg());

            int errCode = mErr.getErrCode();
            if (errCode == 401 || errCode == 402) {
                Activity topActivity = AppUtil.getInstance().peek();
                if (topActivity != null) {
//                    Navigator.exitLogin(topActivity);
                }
            }
        } else {
            LogUtils.d(" - ---rror instanceof HttpException ");
            if (error instanceof HttpException ||
                    error instanceof SocketTimeoutException ||
                    error instanceof SocketException ||
                    error instanceof UnknownHostException) {
                if (mView != null) {
                    if (errType) {
                        mView.onError();
                    } else {
                        mView.toast("后台服务维护中，请耐心等候");
                    }
                }
            } else {
            }
            if (BuildConfig.DEBUG) {
                error.printStackTrace();
            }
        }
    }
}
